package com.vca.service.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.vca.common.model.course.CoursePackage;
import com.vca.common.request.AdminCommonRequest;
import com.vca.common.request.CoursePackageAddRequest;
import com.vca.common.request.PageParamRequest;
import com.vca.common.response.AdminHeaderResponse;
import com.vca.common.response.CoursePackageAdminResponse;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 套课表 服务类
 * </p>
 *
 * @author chenBing
 * @since 2022-11-16
 */
public interface CoursePackageService extends IService<CoursePackage> {

    /**
     * 套课列表
     * @author Li
     * @date 2022/11/17 17:15
     * @return
     */
    PageInfo getAdminList(AdminCommonRequest request, PageParamRequest pageParamRequest);

    /**
     * 修改排序
     * @param coursePackageId 套课id
     * @param sort 排序
     * @author Li
     * @date    2022/11/18 09:36
     * @return
     */
    boolean updateSort(Integer coursePackageId, Integer sort);

    /**
     * 上架课程
     * @param coursePackageId 套课id
     * @author Li
     * @date    2022/11/18 09:36
     * @return
     */
    boolean courseOnShell(Integer coursePackageId);

    /**
     * 下架课程
     * @param coursePackageId 套课id
     * @author Li
     * @date    2022/11/18 09:36
     * @return
     */
    boolean courseOffShell(Integer coursePackageId);

    /**
     * 获取所有套课的时长
     * @author Li
     * @date    2022/11/18 10:00
     * @return
     */
    List<BigDecimal> getDurationTotal();

    /**
     * 添加套课
     * @author Li
     * @date    2022/11/18 10:11
     * @return
     */
    boolean addCoursePackage(CoursePackageAddRequest request);

    /**
     * 根据id获取套课信息
     * @param courseId
     * @author Li
     * @date    2022/11/22 16:29
     * @return
     */
    CoursePackageAdminResponse getCourse(Long courseId);

    /**
     * @Description:修改套课
     * @Author: Li
     * @Date: 2022/11/22 16:29
     */
    boolean updateCourse(CoursePackageAddRequest request);

    /**
     * 获得课程头部数据
     * @author Li
     * @date 2022/11/23 09:16
     * @return
     */
    List<AdminHeaderResponse> getHeader();

    /**
     * 删除套课
     * @author Li
     * @date 2022/11/23 09:16
     * @return
     */
    boolean deleteCourse(Long courseId);

    List<CoursePackage> getCoursePackagesAndDelete(List<Long> ids);
}
